/***************************************************************************************************
  *Copyright(C),2010-2016,Sumscope
  *FileName	:  FormatTable.h
  *Author	:  scofined.qi
  *Version	:  1.0
  *Date		:  2016/08/03
  *Desc		:  //用于主要说明此程序文件完成的主要功能
  *Relation :  
  *Others	:  //其他内容说明
  *Function :  //主要函数列表，每条记录应包含函数名及功能简要说明
  *History	:  //修改历史记录列表，每条修改记录应包含修改日期、修改者及修改内容简介
***************************************************************************************************/
#pragma once

#include "BaseString.h"
#include "../core.h"

namespace qb{
	namespace base{
		class TableGroup;
		class TableGroupVec;
        class S_CORE_EXPORT FormatTable{
			enum kOutputType{
				kOutputTypeLog,
				kOutputTypeConsole,
				kOutputTypeDebugView,
			};
			TableGroupVec*				m_groups;
			bool						m_autolist;
			bool						m_hasref;
		public:
			FormatTable();
			~FormatTable();
			void SetAutoList(bool autoList){ m_autolist = autoList; }
			// 为一个表格的一条记录增加各个字段,当字段名称重复的时候,表示切换到下一条记录
			void AddField(const BaseString& name, const BaseString& value, int maxLength = 0);

			// 增加新的表格
			void AddGroup(const BaseString& name);

			// 按照指定的列排序
			void SortBy(const BaseString& name, bool ascend);

			// 格式化表格为一个字符串
			BaseString Format();
			void FormatToLog(const char* msg=nullptr);
			void FormatToDebugView(const char* msg=nullptr);
			void FormatToConsole(const char* msg=nullptr);
		protected:
			void FormatToOutput(kOutputType type,const char* msg);
			void UpdateRefColumn();
		};
	}//namespace base;
}//namespace qb;
